﻿
//// <copyright file="BOMImportFromXlsx.cs" company="MUnique">
//// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//// </copyright>
////   <summary>
////       BOM 表格数据预处理
////    </summary>

//using BomComparison.Core.Models;
//using OfficeOpenXml;

//namespace BomComparisonModule;

///// <summary>
///// Simply opens an existing file and reads some values and properties
///// Create a DataTable from Excel File
///// </summary>
//public class BomPreferCheck
//{
//    private const int START_COL_INDEX = 1; // 优化：定义常量，提高代码可读性
//    private const int TITLE_ROW_OFFSET = 1; // 说明：titleRow 后面的行作为数据开始行
//    public string ExcelFilePath { get; set; }
//    public int TitleRow { get; set; }
//    public int PartNumberCol { get; set; }
//    public int PartQtyCol { get; set; }
//    public int PartRefDesCol { get; set; }
//    public int PartDescriptionCol { get; set; }
//    public List<BomItem> BillOfMaterials { get; set; }
//    public BomPreferCheck()
//    {

//    }



//    #region 使用Epplu从xlsx文件读取BOM 转为list
//    /// <summary>
//    /// Excel to List
//    /// </summary>
//    public List<BomItem> ExcelToList(string FilePath, int titleRow, int partNumberCol, int partQtyCol, int partRefDesCol, int partDescriptionCol)
//    {
//        var hasHeaderRow = true;
//        List<BomItem> bomList = [];


//        try
//        {

//            //使用Epplus            
//            //create a new Excel package
//            FileInfo xlsxFile = new(FilePath);
//            using (ExcelPackage package = new(xlsxFile))
//            {
//                var worksheet = package.Workbook.Worksheets[0];

//                //check if the worksheet is completely empty
//                if (worksheet == null || worksheet.Dimension == null)
//                {
//                    throw new ArgumentException("The worksheet is empty or not properly formatted.");
//                    return bomList;
//                }

//                //获取worksheet最后一行的行数和最后一列的列数
//                var maxRows = worksheet.Dimension.End.Row;
//                var maxCols = worksheet.Dimension.End.Column;

//                // 检查行和列索引是否有效
//                if (maxRows <= titleRow || maxCols <= START_COL_INDEX)
//                {
//                    throw new ArgumentException("工作表区域无效，无法读取数据。");
//                }

//                // 优化：提前读取整个区域的值，减少重复读取
//                var rangeValues = worksheet.Cells[titleRow + TITLE_ROW_OFFSET, START_COL_INDEX, maxRows, maxCols];
//                for (var rowIndex = titleRow + TITLE_ROW_OFFSET; rowIndex <= maxRows; rowIndex++)
//                {

//                    //GetCellTextOrEmpty(rangeValues[rowIndex, partNumberCol]);
//                    //GetCellFloat(rangeValues[rowIndex, partQtyCol]);
//                    //GetCellTextOrEmpty(rangeValues[rowIndex, partRefDesCol]);
//                    //GetCellTextOrEmpty(rangeValues[rowIndex, partDescriptionCol]);



//                }


//            }

//        }
//        catch (Exception ex)
//        {
//            Console.WriteLine(ex.Message);
//        }
//        return bomList;
//    }

//    #endregion

//    private static string GetCellTextOrEmpty(ExcelRange cell)
//    {
//        if (cell.IsRichText)
//        {
//            return cell.RichText.Text ?? string.Empty;
//        }
//        else
//        {
//            return Convert.ToString(cell.Value) ?? string.Empty;
//        }
//    }

//    private static float GetCellFloat(ExcelRange cell)
//    {
//        float result;
//        var qtyInput = GetCellTextOrEmpty(cell);

//        // 对PartQuantity进行特别处理，以应对非数值情况
//        if (!float.TryParse(qtyInput, out result))
//        {
//            // TODO: 根据业务需求处理转换失败的情况，这里暂时返回0
//            Console.WriteLine($"Failed to parse float value at cell {cell.Address}: {qtyInput}");
//            return 0;
//        }
//        return result;

//    }



//}
